package homework.day05_1;

import java.io.*;
import java.util.Scanner;

/**
 * 编写一个记事本工具
 * <p>
 * 程序启动后，要求用户输入一个文件名。如果该文件不存在
 * 则直接创建。
 * 如果存在，则提示用户:
 * "该文件已存在，是否更换文件名?[y]更换，[n]不更换"
 * 让用户输入y或n决定
 * 如果更换则重新只要求用户输入文件名。
 * <p>
 * 如果不更换，则提示用户:
 * 是重新编写文件内容，还是继续写入文件内容?[y]重新 [n]继续
 * 如果是重新写，则将该文件原来的数据全部抹除
 * 如果是继续写，则将写入的内容都追加到文件中。
 * <p>
 * 之后用户输入的每一行字符串都要写入到文件中，当用户单独
 * 输入"exit"是程序退出。
 *
 * @author Xiloer
 */
public class Test03 {
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个文件名:");
        String name  = scan.nextLine();
        File file = new File(name);
        String note;
        String yn;

        FileOutputStream fos ;
        OutputStreamWriter osw ;
        BufferedWriter bws ;
        PrintWriter pw;

        while (true) {

            if (file.exists()) {
                System.out.println("该文件已存在，是否更换文件名?[y]更换，[n]不更换！");
                yn = scan.nextLine();

                if ("y".equalsIgnoreCase(yn) || "n".equalsIgnoreCase(yn)) {
                    if ("y".equalsIgnoreCase(yn)) {
                        System.out.println("请更换一个文件名:");
                        name  = scan.nextLine();
                        file = new File(name);
                        continue;
                    } else if ("n".equalsIgnoreCase(yn)) {
                        System.out.println("是重新编写文件内容，还是继续写入文件内容?[y]重新 [n]继续！");
                        yn = scan.nextLine();
                        if ("y".equalsIgnoreCase(yn)) {
                            System.out.println("如果是重新写，则将该文件原来的数据全部抹除！");
                            System.out.println("请输入内容:");
                            fos = new FileOutputStream(file);
                            osw = new OutputStreamWriter(fos, "UTF-8");
                            bws = new BufferedWriter(osw);
                            pw = new PrintWriter(bws,true);

                            while (true) {
                                note = scan.nextLine();
                                if ("exit".equalsIgnoreCase(note)) {
                                    break;
                                }
                                pw.println(note);
                            }
                            pw.close();
                            break;
                        } else if ("n".equalsIgnoreCase(yn)) {
                            System.out.println("如果是继续写，则将写入的内容都追加到文件中！");
                            System.out.println("请输入内容:");
                            fos = new FileOutputStream(file,true);
                            osw = new OutputStreamWriter(fos, "UTF-8");
                            bws = new BufferedWriter(osw);
                            pw = new PrintWriter(bws,true);
                            while (true) {
                                note = scan.nextLine();
                                if ("exit".equalsIgnoreCase(note)) {
                                    break;
                                }
                                pw.println(note);
                            }
                            pw.close();
                            break;
                        }
                    }
                }else {
                    continue;
                }
            } else {
                file.createNewFile();
                System.out.println("文件已创建!");
                break;
            }
        }
    }
}
